<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Сдвигатель</title>
</head>

<body bgcolor="FFFFFF">

<h1><img align="center" height="32" width="32" src="../../../icons/shifter.gif">
<em>Сдвигатель</em></h1>

<p><table>
<tr><td><strong>Библиотека:</strong></td>
	<td><a href="index.html">Арифметика</a></td></tr>
<tr><td><strong>Введён в:</strong></td>
	<td>2.3.0</td></tr>
<tr><td valign="top"><strong>Внешний вид:</strong></td>
	<td valign="top"><img src="../../../img-libs/shifter.png"></td></tr>
</table></p>

<h2>Поведение</h2>

<p>Этот компонент включает два входа: <var>данные</var> и <var>дистанция</var>, и имеет один выход, значение на котором - результат сдвига <var>данные</var> на <var>дистанция</var> позиций. И <var>данные</var>, и выход имеют одинаковое количество битов. Компонент поддерживает следующие типы сдвига:</p>

<ul>

<li>Логический левый: все биты в <var>данные</var> сдвигаются вверх на <var>дистанция</var> позиций, а нижние <var>дистанция</var> позиций заполняются нулями. Например, 11001011 логически сдвинутое влево на два - это 00101100. (Две верхние единицы потеряны.)</li>

<li>Логический правый: все биты в <var>данные</var> сдвигаются вниз на <var>дистанция</var> позиций, а верхние <var>дистанция</var> позиций заполняются нулями. Например, 11001011 логически сдвинутое вправо на два - это 00110010. (Две нижние единицы потеряны.)</li>

<li>Арифметический правый: все биты в <var>данные</var> сдвигаются вниз на <var>дистанция</var> позиций, а верхние <var>дистанция</var> позиций заполняются повторениями самого верхнего бита в <var>данные</var>. Например, 11001011 арифметически сдвинутое вправо на два - это 11110010.</li>

<li>Циклический левый: все биты в <var>данные</var> сдвигаются вверх на <var>дистанция</var> позиций, а верхние <var>дистанция</var> позиций прокручиваются вниз. Например, 11001011 циклически сдвинутое влево на два - это 00101111.</li>

<li>Циклический правый: все биты в <var>данные</var> сдвигаются вниз на <var>дистанция</var> позиций, а нижние <var>дистанция</var> позиций прокручиваются вверх. Например, 11001011 циклически сдвинутое вправо на два - это 11110010.</li>

</ul> 

<p>Обратите внимание, что если <var>дистанция</var> содержит плавающие значения или значения ошибки, то выход полностью состоит из значений ошибки, поскольку нет способа догадаться, на сколько сдвигать входное значение.</p>

<h2>Контакты</h2>

<dl>

<dt>Западный край, северный конец (вход, разрядность соответствует атрибуту Биты данных)</dt>
<dd>Значение, которое будет сдвинуто.</dd>

<dt>Западный край, южный конец (вход, разрядность вычисляется как указано ниже)</dt>
<dd>Количество битов значения, на которое нужно сдвигать значение на входе <var>данные</var>. Этот вход должен иметь столько битов, каково минимальное число для указания любой дистанции сдвига от 0 до значения, на единицу меньшего, чем значение атрибута Биты данных; то есть число битов, равное логарифму по основанию 2 от значения атрибута Биты данных, округлённому вверх до ближайшего целого. Например, если значение Биты данных равно 8, то этот вход должен иметь 3 бита; но если оно равно 9, то потребуются 4 бита.</dd>

<dt>Восточный край (выход, разрядность соответствует атрибуту Биты данных)
<dd>Результат сдвига входного значения на количество позиций, заданное другим входом.</dd>

</dl>

<h2>Атрибуты</h2>

<p>Когда компонент выбран, или уже добавлен, комбинации от Alt-0 до Alt-9 меняют его атрибут <q>Биты данных</q>.</p>

<dl>

<dt>Биты данных</dt>
<dd>Разрядность входа <var>данные</var> и выхода компонента.</dd>

<dt>Тип сдвига</dt>
<dd>Один из пяти возможных типов сдвига, как описано выше (Логический левый, Логический правый, Арифметический правый, Циклический левый, Циклический правый).</dd>

</dl>

<h2>Поведение Инструмента Нажатие</h2>

<p>Нет.</p>

<h2>Поведение Инструмента Текст</h2>

<p>Нет.</p>

<p><a href="../index.html">Назад к <em>Справке по библиотеке</em></a></p>

</body>
</html>
